﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;

namespace emulib
{
    /// <summary>
    /// Defines everything needed to create and run an MmoServ ontop of mmoemu
    /// </summary>
    public interface IMmoServ
    {
        /// <summary>
        /// Get info about the IMmoServ implementation
        /// </summary>
        /// <returns>ServerInfo object</returns>
        ServerInfo GetInfo();
        /// <summary>
        /// Load configuration information for IMmoServ implementation
        /// </summary>
        void LoadConfig(String config);
        /// <summary>
        /// Save configuration information for IMmoServ implementation
        /// </summary>
        void SaveConfig(String config);
        /// <summary>
        /// Run the IMmoServ implementation
        /// </summary>
        void Run();
        /// <summary>
        /// Run the IMmoServ implementation
        /// </summary>
        /// <param name="config">Config file to load before Run()</param>
        void Run(String config);
        /// <summary>
        /// Shutdown the IMmoServ implementation safely
        /// </summary>
        void Stop();
        /// <summary>
        /// Shutdown the IMmoServ implementation safely
        /// </summary>
        /// <param name="config">Config file to save to before Stop()</param>
        void Stop(String config);
        /// <summary>
        /// Handle a command sent from the mmoemu thread
        /// </summary>
        /// <param name="cmd">String command sent</param>
        void HandleCmd(String[] cmd);
    }
}
